7
תגובות
אם יש לי את הקוד הבא:
איך אני מחזיר את הטקסט לקדמותו עם השינויים ב-replace?
כתבתי שם $1 ו-$2 בכל מיני מקומות ולא הצלחתי...
for (i in array[2]) {
re=new RegExp('[^"]' + array[2][i] + '([^-a-zA-z0-9א-ת"\']|$)', "g");
text=text.replace(re, '$1' + array[3][i] + '$2');
}
re=new RegExp('[^"]' + array[2][i] + '([^-a-zA-z0-9א-ת"\']|$)', "g");
text=text.replace(re, '$1' + array[3][i] + '$2');
}
איך אני מחזיר את הטקסט לקדמותו עם השינויים ב-replace?
כתבתי שם $1 ו-$2 בכל מיני מקומות ולא הצלחתי...
7 תשובות
(הדבר היחיד שאני רוצה שישתנה זה האיבר במערך.)
ואם כבר אני שואל, אז איך מונעים מ-^ ומ-\ להיכלל בביטוי בלי להרוס את התפקיד שלהם בביטוי הרגולרי הבא:
([^-a-zA-z0-9א-ת"\']|$)
ענה
iiddaannyy
ב
05 למרץ 2012
#
להודעה הראשונה:
לא הבנתי מה ניסית לעשות.
להודעה השניה:
תוסיף באקסלאש (\) לפני.
יש לי את הביטוי הרגולרי הזה:
re=new RegExp('[^"]' + array[2][i] + '([^-a-zA-z0-9א-ת"\']|$)', "g");
שעושה מה שעושה.
עכשיו, כשהוא מוצא טקסט מתאים ב-text.replace על הטקסט שבמשתנה text, הוא מחליף אותו במשהו.
הדבר היחיד שאני רוצה שהוא ישנה זה את
array[2][i]
ל-array[3][i]
, ושאת כל השאר (מה שמסביב) ישאיר כמו שהוא.בשביל זה אני אמור להשתמש ב-$1 וכאלה, כן? הבעיה היא שלא הצלחתי כמו שצריך... זה הכל.
בקשר להודעה השנייה:
כשאני כותב:
[^-a-zA-z0-9א-ת"\']
הוא בעצם מתייחס לטקסט שהוא לא מקף, אותיות גדולות וקטנות באנגלית, מספרים, אותיות בעברית, גרשיים כפולים וגרש בודד.
הבעיה היא שעצם זה שכתוב בהתחלה ^ (שאמור לגרום לכך שהטקסט שאחריו לא יהיה אמור להופיע בטקסט שעובר את הבדיקות) מוסיף גם את הסימן ^ לרשימה, והאקסלאש \ ששמתי כדי להבריח את הגרש גם נחשב אחד מהם, למרות שאני לא רוצה.
<script type="text/javascript">
var replace = 'hi'; var with1 = '$1 bye $2';
text = 'hi man';
RegExp.escape = function(text)
{
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
regexp = new RegExp('([^"]*)' + RegExp.escape(replace) + '(\\W*)', "g");
document.write( text.replace(regexp, with1));
</script>
var replace = 'hi'; var with1 = '$1 bye $2';
text = 'hi man';
RegExp.escape = function(text)
{
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
regexp = new RegExp('([^"]*)' + RegExp.escape(replace) + '(\\W*)', "g");
document.write( text.replace(regexp, with1));
</script>